//
//  SaveCachesTool.h
//  jiulongLJ
//
//  Created by MyMac on 15/4/9.
//  Copyright (c) 2015年 MyMac. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface SaveCachesTool : NSObject
@property(nonatomic,strong)NSManagedObjectContext*context;

/**
 *  存储文件
 *
 *  @param pathName    文件名，注意文件扩展名，最终MD5加密
 *  @param requestData 存储数据
 *
 *  @return 存储成功或失败
 */
+(BOOL)saveCachesPath:(NSString*)pathName andcachesData:(id)requestData;//存储
/**
 *  根据文件名读取文件
 *
 *  @param pathName 文件名，与存储时文件名相对应
 *
 *  @return 返回NSData
 */
+(NSData*)receiveCachesData:(NSString*)pathName;//读取
/**
 *  判断文件存不存在
 *
 *  @param pathName 文件名
 *
 *  @return 返回结果
 */
+(BOOL)fileExiste:(NSString*)pathName;//判断文件存不存在
/**
 *  删除单个文件
 *
 *  @param pathName 文件名
 *
 *  @return 成功或失败
 */
+(BOOL)removefile:(NSString*)pathName;
/**
 *  删除所有文件
 *
 *  @return 成功或失败
 */
+(BOOL)removeAllFile;
/**
 *  返回文件夹路径
 *
 *  @return 路径
 */
+(NSString*)receicePath;

+(SaveCachesTool*)shareSaveTool;
/**
 *  创表
 *
 *  @param language sqlit语句
 *  @param pathName 数据库名字
 *
 *  @return 成功或失败
 */
+(BOOL)createTabelSqliteLanguage:(NSString*)language andpath:(NSString*)pathName;
/**
 *  增加数据，两种方式，一种是标准的sqlit语句，一种是传入一个字典
 *
 *  @param language sqlit语句
 *  @param dict     传入的字典
 *
 *  @return 成功或失败
 */
+(BOOL)insertdataSqliteLanguage:(NSString*)language and:(NSDictionary*)dict;//增
+(BOOL)deleteDataSqliteLanguage:(NSString*)language;//删
+(NSArray*)searchDataSqliteLanguage:(NSString*)language;//查
+(BOOL)updataDataSqliteLanguage:(NSString*)language;//改
+(NSString*)libraryPath:(NSString*)name;//返回数据库路径，传入数据库名


/**
 *  coredata保存
 *
 *  @param object    要保存的数据，一个字典，或者一个对象（与实体的属性相同的一个对象，不是继承NSManagedObject,NSManagedObject读取不到属性）
 *  @param objcClass 继承NSManagedObject的类
 */
+(void)saveCoreData:(id)object andClass:(Class)objcClass;
/**
 *  删除实体
 *
 *  @param object    一个字典，或继承NSManagedObject的对象，或与实体的属性相同的一个对象
 *  @param objeClass 继承NSManagedObject的类
 */
+(void)deletedCoreData:(id)object andClass:(Class)objeClass;
/**
 *  搜索
 *
 *  @param objcClass    继承NSManagedObject的类
 *  @param predicateStr 过滤条件
 *
 *  @return 查询结果
 */
+(NSArray*)searchCoreDataClass:(Class)objcClass andPredicateString:(NSPredicate*)predicateStr;

/**
 *  更新数据
 *
 *  @param fromObject  旧数据（一个字典或者非继承NSManagedObject的对象）
 *  @param toObject    新数据（一个字典或者非继承NSManagedObject的对象）
 *  @param entityClass 实体类
 */
+(void)updataCoreDataFromEntity:(id)fromObject toEntity:(id)toObject andEntityClass:(Class)entityClass;
@end
